<?php require_once(BASEPATH.'application/controllers/validaciones.php');
//egresos
class gastos extends validaciones {

	function gastos(){
		parent::Controller();
		$this->load->library('rapyd');
	}
    function index() {
        
		redirect('finanzas/gastos/filteredgrid');
	}
	function filteredgrid(){
		
        $this->rapyd->load('datagrid2','datafilter');

		$atts = array(
			'width'      => '800',
			'height'     => '600',
			'scrollbars' => 'yes',
			'status'     => 'yes',
			'resizable'  => 'yes',
			'screenx'    => '0',
			'screeny'    => '0'
		);

		$modbus=array(
			'tabla'   =>'sprv',
			'columnas'=>array(
			'proveed' =>'C&oacute;digo Proveedor',
			'nombre'=>'Nombre',
			'rif'=>'RIF'),
			'filtro'  =>array('proveed'=>'C&oacute;digo Proveedor','nombre'=>'Nombre'),
			'retornar'=>array('proveed'=>'proveed'),
			'titulo'  =>'Buscar Proveedor');

		$boton=$this->datasis->modbus($modbus);
        
        $this->rapyd->uri->keep_persistence();

		$filter = new DataFilter('B&uacute;squeda');
		$select=array('a.*');
		$filter->db->select($select);
		$filter->db->from('gser AS a');
        $filter->db->where("comp in ('P','ND')");

		$filter->fechad = new dateonlyField('Desde', 'fechad','d/m/Y');
		$filter->fechah = new dateonlyField('Hasta', 'fechah','d/m/Y');
		$filter->fechad->clause  =$filter->fechah->clause='where';
		$filter->fechad->db_name =$filter->fechah->db_name='fecha';
		$filter->fechad->insertValue = date("Y-m-d",mktime(0, 0, 0, date("m"), date("d")-30,   date("Y")));
		$filter->fechah->insertValue = date('Y-m-d'); 
		$filter->fechah->size=$filter->fechad->size=10;
		$filter->fechad->operator='>='; 
		$filter->fechah->operator='<=';

		$filter->numero = new inputField('N&uacute;mero de Factura', 'numero');
		$filter->numero->size=20;
		
		$filter->numeroi = new inputField('Comprobante', 'numeroi');
		$filter->numeroi->size=20;

		$filter->rifci = new inputField('RUC','rif');
		$filter->rifci->size=13;
		
		$filter->nombre = new inputField('Proveedor','nombre');
		$filter->nombre->size=20;
		
        $filter->moneda = new dropdownField("Moneda", "moneda");
		$filter->moneda->style='width:200px;';
		$filter->moneda->option("","Todas las monedas" );
		$filter->moneda->options("SELECT codigo,descrip FROM moneda ORDER BY codigo" );
		
		$filter->comp = new dropdownField("Comprobante", "comp");
		$filter->comp->option("","");
		$filter->comp->option("P","P-FACTURAS DE COMPRAS");
		$filter->comp->option("ND","ND-NOTAS DE DEBITO");
		$filter->comp->style='width:200px;';
		
		$filter->seriei = new dropdownField("Tipo de Documento", "seriei");
		$filter->seriei->option("","Todos" );
		$filter->seriei->options("SELECT codigo, CONCAT_WS('-',codigo,descrip) AS descrip FROM seriep ORDER BY codigo");
        $filter->seriei->style='width:200px;';

		$filter->buttons('reset','search');
		$filter->build();

		$grid = new DataGrid2();
		$grid->order_by('transac','DESC');
		$grid->per_page = 10;

        $uri_2  = anchor_popup('formatos/ver/GSER/<#transac#>',img(array('src'=>'images/pdf_logo.gif','border'=>'0','alt'=>'Ver Html','height'=>'15','title'=>'Ver Html')),$atts);
		$uri_2 .= anchor_popup("formatos/verhtml/GSER/<#transac#>",img(array('src'=>'images/html_icon.gif','border'=>'0','alt'=>'Ver Pdf','height'=>'15','title'=>'Ver Pdf')),$atts);
					
		$uri = anchor('finanzas/gastos/dataedit/show/<#transac#>','<#seriep#>-<#numero#>');
        
        $grid->column('Acci&oacute;n',$uri_2,"align='center'");
        
        //$grid->column('Serie','seriep');
        $grid->column_orderby('Comprobante','<#comp#><#seriei#>-<#numeroi#>','numeroi');
        $grid->column('N&uacute;mero',$uri);
        $grid->column('Moneda' ,'moneda','align=\'center\'');
		$grid->column_orderby('Fecha'   ,'<dbdate_to_human><#fecha#></dbdate_to_human>','fecha','align=\'center\'');
		$grid->column('Vence'   ,'<dbdate_to_human><#vence#></dbdate_to_human>','align=\'center\'');
		$grid->column('RUC','rif');
		$grid->column('Nombre'  ,'nombre');
		$grid->column('Sub-Total','<nformat><#totpre#></nformat>' ,'align=\'right\'');
        $grid->column('Impuesto'        ,'<nformat><#totiva#></nformat>' ,'align=\'right\'');
		$grid->column_orderby('Total'           ,'<nformat><#totbruto#></nformat>','totbruto','align=\'right\'');
		$grid->column('Detracci&oacute;n'      ,'<nformat><#rete#></nformat>','align=\'right\'');
		$grid->column('Neto a Cancelar' ,'<nformat><#totneto#></nformat>','align=\'right\'');
		
		//$grid->column('Cambio' ,'cambio','align=\'center\'');
		
		$grid->totalizar('totpre','totiva','totbruto','rete','totneto');

		$grid->add("finanzas/gastos/dataedit/create","Nuevo Registro");
		$grid->build('datagridST');
        
        $style ='
		<style type="text/css">
		.fakeContainer { /* The parent container */
		    margin: 5px;
		    padding: 0px;
		    border: none;
		    width: 1200px; /* Required to set */
		    height: 500px; /* Required to set */
		    overflow: hidden; /* Required to set */
		}
		</style>	
		';

		$data['content'] = $grid->output;
        $data['style']   = $style;
		$data['filtro']  = $filter->output;
		$data['tabla']  = "";
		
		$data['head']    = $this->rapyd->get_head();
		$data['title'] = heading('Documentos Provisionados');
		$this->load->view('view_ventanas', $data);
	}
	function docl(){
		
        $this->rapyd->load('datagrid2','datafilter');

		$atts = array(
			'width'      => '800',
			'height'     => '600',
			'scrollbars' => 'yes',
			'status'     => 'yes',
			'resizable'  => 'yes',
			'screenx'    => '0',
			'screeny'    => '0'
		);

		$modbus=array(
			'tabla'   =>'sprv',
			'columnas'=>array(
			'proveed' =>'C&oacute;digo Proveedor',
			'nombre'=>'Nombre',
			'rif'=>'RIF'),
			'filtro'  =>array('proveed'=>'C&oacute;digo Proveedor','nombre'=>'Nombre'),
			'retornar'=>array('proveed'=>'proveed'),
			'titulo'  =>'Buscar Proveedor');

		$boton=$this->datasis->modbus($modbus);
        
        $this->rapyd->uri->keep_persistence();

		$filter = new DataFilter('B&uacute;squeda');
		$select=array('a.*');
		$filter->db->select($select);
		$filter->db->from('gser AS a');
        $filter->db->where("comp in ('L')");

		$filter->fechad = new dateonlyField('Desde', 'fechad','d/m/Y');
		$filter->fechah = new dateonlyField('Hasta', 'fechah','d/m/Y');
		$filter->fechad->clause  =$filter->fechah->clause='where';
		$filter->fechad->db_name =$filter->fechah->db_name='fecha';
		$filter->fechad->insertValue = date("Y-m-d",mktime(0, 0, 0, date("m"), date("d")-30,   date("Y")));
		$filter->fechah->insertValue = date('Y-m-d'); 
		$filter->fechah->size=$filter->fechad->size=10;
		$filter->fechad->operator='>='; 
		$filter->fechah->operator='<=';

		$filter->numeroi = new inputField('Comprobante', 'numeroi');
		$filter->numeroi->size=20;

		$filter->rifci = new inputField('RUC','rif');
		$filter->rifci->size=13;
		
		$filter->nombre = new inputField('Proveedor','nombre');
		$filter->nombre->size=20;
		
        $filter->moneda = new dropdownField("Moneda", "moneda");
		$filter->moneda->style='width:200px;';
		$filter->moneda->option("","Todas las monedas" );
		$filter->moneda->options("SELECT codigo,descrip FROM moneda ORDER BY codigo" );
		
		//$filter->comp = new dropdownField("Comprobante", "comp");
		//$filter->comp->option("","");
		//$filter->comp->option("L","L-OTROS");
		//$filter->comp->style='width:200px;';
		
		$filter->seriei = new dropdownField("Tipo de Documento", "seriei");
		$filter->seriei->option("","Todos" );
		$filter->seriei->options("SELECT codigo, CONCAT_WS('-',codigo,descrip) AS descrip FROM seriel ORDER BY codigo");
        $filter->seriei->style='width:200px;';

		$filter->buttons('reset','search');
		$filter->build();

		$grid = new DataGrid2();
		$grid->order_by('transac','DESC');
		$grid->per_page = 10;

        $uri_2  = anchor_popup('formatos/ver/DOCL/<#transac#>',img(array('src'=>'images/pdf_logo.gif','border'=>'0','alt'=>'Ver Html','height'=>'15','title'=>'Ver Html')),$atts);
		$uri_2 .= anchor_popup("formatos/verhtml/DOCL/<#transac#>",img(array('src'=>'images/html_icon.gif','border'=>'0','alt'=>'Ver Pdf','height'=>'15','title'=>'Ver Pdf')),$atts);
					
		$uri = anchor('finanzas/gastos/dataeditl/show/<#transac#>','<#seriep#>-<#numero#>');
        
        $grid->column('Acci&oacute;n',$uri_2,"align='center'");
        
        //$grid->column('Serie','seriep');
        $grid->column_orderby('Comprobante','<#comp#><#seriei#>-<#numeroi#>','numeroi');
        $grid->column('N&uacute;mero',$uri);
        $grid->column('Moneda' ,'moneda','align=\'center\'');
		$grid->column_orderby('Fecha'   ,'<dbdate_to_human><#fecha#></dbdate_to_human>','fecha','align=\'center\'');
		$grid->column('Vence'   ,'<dbdate_to_human><#vence#></dbdate_to_human>','align=\'center\'');
		$grid->column('RUC','rif');
		$grid->column('Nombre'  ,'nombre');
		$grid->column('Sub-Total','<nformat><#totpre#></nformat>' ,'align=\'right\'');
        $grid->column('Impuesto'        ,'<nformat><#totiva#></nformat>' ,'align=\'right\'');
		$grid->column_orderby('Total'           ,'<nformat><#totbruto#></nformat>','totbruto','align=\'right\'');
		$grid->column('Detracci&oacute;n'      ,'<nformat><#rete#></nformat>','align=\'right\'');
		$grid->column('Neto a Cancelar' ,'<nformat><#totneto#></nformat>','align=\'right\'');
		
		//$grid->column('Cambio' ,'cambio','align=\'center\'');
		
		$grid->totalizar('totpre','totiva','totbruto','rete','totneto');

		$grid->add("finanzas/gastos/dataeditl/create","Nuevo Registro");
		$grid->build('datagridST');
        
        $style ='
		<style type="text/css">
		.fakeContainer { /* The parent container */
		    margin: 5px;
		    padding: 0px;
		    border: none;
		    width: 1200px; /* Required to set */
		    height: 500px; /* Required to set */
		    overflow: hidden; /* Required to set */
		}
		</style>	
		';

		$data['content'] = $grid->output;
        $data['style']   = $style;
		$data['filtro']  = $filter->output;
		$data['tabla']  = "";
		
		$data['head']    = $this->rapyd->get_head();
		$data['title'] = heading('Asientos de Diario');
		$this->load->view('view_ventanas', $data);
	}

	function dataedit(){
		$this->rapyd->load('dataobject','datadetails');
        
        $modbus=array(
			'tabla'   =>'cpla',
			'columnas'=>array(
				'cuenta'  =>'Cuenta',
				'descrip' =>'Descripci&oacute;n',
				'ajuste'  => 'Llevar Ajuste',
				'contrapartida'  => 'Contrapartida',
				'clase'  => 'Clase',
				'costo'  => 'Costo',
				'tercero'  => 'Tercero',
				'extranjeria'  => 'Extranjeria'
				),
			'filtro'  =>array('cuenta'  =>'Cuenta','descrip'=>'Descripci&oacute;n'),
			'retornar'=>array(
				'cuenta' =>'cuenta_<#i#>',
				'descrip'=>'desca_<#i#>',
				),
			'p_uri'   => array(4=>'<#i#>'),
			'titulo'  => 'Buscar Cuenta',
            'where'   => '`mostrar` = "S"'
		);
        		
        $btn=$this->datasis->p_modbus($modbus,'<#i#>');
        	
		$modbus_sprv=array(
			'tabla'   =>'sprv',
			'columnas'=>array(
	                'rif'=>'RIF',		
                'proveed' =>'C&oacute;digo Proveedor',
                'nombre'=>'Nombre'),
			'filtro'  =>array('rif'=>'RUC','nombre'=>'Nombre'),
			'retornar'=>array(
                'proveed'=>'proveed',
                'rif'=>'rif',
                'nombre'=>'nombre'),
                'p_uri'   => array(4=>'<#i#>'),
			'titulo'  =>'Buscar Proveedor');

		$boton=$this->datasis->p_modbus($modbus_sprv);
		
		$modbus_gser=array(
			'tabla'   =>'gser',
			'columnas'=>array(
					'seriep'=>'Serie',
					'numero'=>'Numero',
					'totbruto' =>'Monto',
	                'rif'=>'RIF',		
                'proveed' =>'C&oacute;digo Proveedor',
                'nombre'=>'Nombre'),
			'filtro'  =>array('rif'=>'RUC','nombre'=>'Nombre','numero'=>'Numero'),
			'retornar'=>array(
                'seriep'=>'seriend',
                'numero'=>'numerond'),
                'p_uri'   => array(4=>'<#i#>'),
                'titulo'  => 'Buscar Facturas');
              
		$botong=$this->datasis->p_modbus($modbus_gser);
        
		$do = new DataObject('gser');
		$do->rel_one_to_many('gitser', 'gitser', 'transac');
				
		$edit = new DataDetails('Gastos', $do);
		$edit->back_url = site_url('finanzas/gastos/filteredgrid');
		$edit->set_rel_title('gitser','Cuenta <#o#>');
		//$edit->script($script);
		
		$edit->pre_process('insert' ,'_pre_insert');
		$edit->pre_process('update' ,'_pre_update');
        $edit->pre_process('delete' ,'_pre_del');
        
		$edit->post_process('insert','_post_insert');
		$edit->post_process('update','_post_update');
		$edit->post_process('delete','_post_delete');
		
		$edit->transac = new hiddenField(" ", 'transac');
       
        //$edit->tipo_doc = new  dropdownField ('Tipo','tipo_doc');
		//$edit->tipo_doc->options("SELECT codigo, CONCAT_WS('-',codigo,descrip) AS descrip FROM serier ORDER BY codigo");
        //$edit->tipo_doc->style='width:180px;';
        
        $edit->cajachica = new  dropdownField ('Caja Chica','cajachica');
        $edit->cajachica->option('N','No esta relacionado con caja chica');
        $edit->cajachica->option('S','Si esta relacionado con caja chica');
        $edit->cajachica->style='width:260px;';
                
        $edit->fecha = new DateonlyField("Fecha", "fecha","Y-m-d");
		$edit->fecha->insertValue = date("Y-m-d");
		$edit->fecha->size = 10;
        $edit->fecha->rule= "required";
        $edit->fecha->rule= "callback_cambio";
        
        $edit->estampa = new DateonlyField("Registro", "estampa","Y-m-d");
		$edit->estampa->insertValue = date("Y-m-d");
        $edit->estampa->mode="autohide";
        $edit->estampa->when=array('show');
        
        $edit->recepcion = new DateonlyField("Recepcion", "recepcion","Y-m-d");
		$edit->recepcion->insertValue = date("Y-m-d");
		$edit->recepcion->size = 10;
        $edit->recepcion->rule= "required";

		$edit->vence = new DateonlyField("Vencimiento", "vence","Y-m-d");
		$edit->vence->insertValue = date("Y-m-d");
		$edit->vence->size = 10;
		
		$edit->cuentai = new inputField('Cuenta', 'cuentai');
		$edit->cuentai->size     = 12;
		$edit->cuentai->rule     = 'required';
		$edit->cuentai->readonly  =true;
		$edit->cuentai->db_name='cuenta';
		$edit->cuentai->when=array('show');
        
		$edit->comp = new dropdownField("Comprobante", "comp");
		$edit->comp->option("","");
		$edit->comp->option("P","P");
		$edit->comp->option("L","L");
		$edit->comp->option("ND","ND");
		$edit->comp->rule= "required";
		$edit->comp->onchange = "tcomp();";
        $edit->comp->style='width:45px;';
		
		$comp=$edit->getval('comp');
		
		$edit->seriei = new dropdownField("Comprobante", "seriei");
		$edit->seriei->option("","Seleccione un comprobante" );
		
		IF(($comp!='L')){
			
			$edit->seriei->options("SELECT codigo, CONCAT_WS('-',codigo,descrip) AS descrip FROM seriep ORDER BY codigo");
		}else{
			$edit->seriei->options("SELECT codigo, CONCAT_WS('-',codigo,descrip) AS descrip FROM seriel WHERE codigo<>'006'ORDER BY codigo ");
		}
			
		$edit->seriei->rule= "required";
		$edit->seriei->onchange = "numgser();";
        $edit->seriei->style='width:200px;';
        
        $ano=date("Y");
        $mes=date("m");
        
        $edit->numeroi = new inputField("N&uacute;mero", "numeroi");
		$edit->numeroi->size = 11;
        $edit->numeroi->css_class ='inputnum';
        $edit->numeroi->mode="autohide";
        $edit->numeroi->rule= "required";
		$edit->numeroi->maxlength=11;
		$edit->numeroi->rule= "callback_chexistecomp";
		//$edit->numeroi->insertValue = date("$ano$mes$num");
		//$edit->numeroi->when=array('show');

		$edit->seriep = new inputField("Serie", "seriep");
		$edit->seriep->size = 4;
		$edit->seriep->rule= "required";
        $edit->seriep->css_class ='inputnum';
        $edit->seriep->mode="autohide";
		$edit->seriep->maxlength=3;
		
		$edit->numero = new inputField("N&uacute;mero", "numero");
		$edit->numero->size = 12;
		$edit->numero->rule= "required|callback_chexiste";
        //$edit->numero->css_class ='inputnum';
        $edit->numero->mode="autohide";
		$edit->numero->maxlength=11;
		
		$edit->seriend = new inputField("Cruce con FC", "seriend");
		$edit->seriend->size = 4;
		$edit->seriend->maxlength=3;
		
		$edit->numerond = new inputField("N&uacute;mero", "numerond");
		$edit->numerond->size = 12;
		$edit->numerond->maxlength=11;
		$edit->numerond->append($botong);
		
		$edit->formap = new dropdownField("Forma de pago", "formap");
		$edit->formap->option("","Seleccione la forma de pago" );
		$edit->formap->options("SELECT codigo, CONCAT_WS('-',codigo,descrip) AS descrip FROM seriefp WHERE compro='P' ORDER BY codigo");
		$edit->formap->rule= "required";
		$edit->formap->onchange= 'totalizar()';
        $edit->formap->style='width:200px;';
        $edit->formap->when=array('show');
		
		$edit->proveed = new inputField("Proveedor", "proveed");
		$edit->proveed->size = 7;
		$edit->proveed->maxlength=5;
        //$edit->proveed->append($botonf.'<-Favoritos'.$boton);
        $edit->proveed->append($boton);
        $edit->proveed->readonly  = true;
        //$edit->proveed->mode="autohide";
        $edit->proveed->rule= "required";
		
		$edit->nombre = new inputField("Nombre", "nombre");
		$edit->nombre->size =  40;
		$edit->nombre->maxlength=80;
        $edit->nombre->readonly  = true;
    
		$edit->rif = new inputField("RUC", "rif");
		$edit->rif->size =  20;
		$edit->rif->maxlength=20; 
        $edit->rif->readonly  = true;
        
        $edit->condi1 = new inputField('Observaci&oacute;n', 'condi1');
		$edit->condi1->size =60;
        $edit->condi1->rule= "required";
		//$edit->condi1->maxlength=50;
        
        $edit->ccosto = new  dropdownField ('Centro de Costo', 'ccosto');
        $edit->ccosto->option("0001","Administraci&oacute;n");
		$edit->ccosto->option('0002',"Operaci&oacute;n");
		$edit->ccosto->option('0003','Importaci&oacute;n'); 
		$edit->ccosto->style='width:200px;';   
       
		$edit->moneda = new dropdownField("Moneda", "moneda");
		$edit->moneda->style='width:200px;';
		$edit->moneda->option("","Seleccione la moneda" );
		$edit->moneda->options("SELECT codigo,descrip FROM moneda ORDER BY codigo" );
		$edit->moneda->rule = 'required';
			
		$edit->cambio = new inputField('Cambio', 'cambio');
		$edit->cambio->css_class ='inputnum';
		$edit->cambio->size      = 12; 
		$edit->cambio->when=array('show');
		
        $edit->ivat = new inputField('Impuesto', 'iva');
		$edit->ivat->css_class ='inputnum';
		$edit->ivat->onkeyup  ='vpr()';
		$edit->ivat->db_name='totiva';
		$edit->ivat->size      = 10;

		$edit->totals = new inputField('Sub-Total', 'totals');
		$edit->totals->css_class ='inputnum';
		$edit->totals->db_name='totpre';
		$edit->totals->size      = 10;

		$edit->totalg = new inputField('Monto Total', 'totalg');
		$edit->totalg->css_class ='inputnum';
		$edit->totalg->db_name='totbruto';
		$edit->totalg->size      = 10;
		$edit->totalg->onkeyup  ='porcreten()';
		
		$edit->totneto = new inputField('Neto por Pagar', 'totneto');
		$edit->totneto->css_class ='inputnum';
		$edit->totneto->readonly  =true;
		$edit->totneto->db_name='totneto';
		$edit->totneto->size      = 10;
		
		$edit->mexento = new inputField('Total Inafecto', 'mexento');
		$edit->mexento->css_class ='inputnum';
		$edit->mexento->db_name='exento';
		$edit->mexento->readonly  =true;
		$edit->mexento->size      = 10;
		//$edit->mexento->when=array('show');
		//$edit->mexento->onkeyup  ='totiva()';
		
		$edit->credito = new inputField('Total en Creditos', 'credito');
		$edit->credito->css_class ='inputnum';
		$edit->credito->size      = 10;
		$edit->credito->readonly  =true;
		//$edit->credito->onkeyup  ='vpr()';
        
        
        $edit->porcrete = new inputField('Porcentaje', 'porcrete');
		$edit->porcrete->css_class ='inputnum';
		$edit->porcrete->size      = 3;
        $edit->porcrete->onkeyup  ='vpr()';
        
        $edit->fvrete = new DateonlyField("Fecha de Vencimiento", "fvrete","Y-m-d");
		$edit->fvrete->insertValue = date("Y-m-d");
		$edit->fvrete->size = 12;
                
        $edit->rete = new inputField('Monto de Detracci&oacute;n %', 'rete');
		$edit->rete->css_class ='inputnum';
		$edit->rete->insertValue = 0;
		$edit->rete->size      = 7;
               
        $edit->codrete = new inputField('Codigo de tasa', 'codrete');
		$edit->codrete->size      = 15;
        $edit->codrete->css_class ='inputnum';
        $edit->codrete->maxlength=2;
        				
        		
		//**************************
		//  Campos para el detalle
		//**************************
		$edit->cuenta = new inputField('Cuenta <#o#>', 'cuenta_<#i#>');
		$edit->cuenta->size     = 12;
		$edit->cuenta->maxlength= 10;
		$edit->cuenta->readonly  = true;
		$edit->cuenta->db_name  = 'cuenta';
		$edit->cuenta->rel_id   = 'gitser';
		$edit->cuenta->rule     = 'required';
		$edit->cuenta->append($btn);

		$edit->desca = new inputField('Descripci&oacute;n <#o#>', 'desca_<#i#>');
		$edit->desca->db_name='desca';
		$edit->desca->rel_id='gitser';
		$edit->desca->rule = 'required|strtoupper';
		$edit->desca->size    = 35;
		
		$edit->ruc = new inputField('RUC <#o#>', 'ruc_<#i#>');
		$edit->ruc->db_name='ruc';
		$edit->ruc->rel_id='gitser';
		$edit->ruc->rule = 'strtoupper';
		$edit->ruc->size    = 11;
		$edit->ruc->maxlength= 11;
		
		$edit->cana = new inputField('Cantidad <#o#>', 'cana_<#i#>');
		$edit->cana->db_name  = 'cana';
		$edit->cana->css_class= 'inputnum';
		$edit->cana->rel_id   = 'gitser';
		$edit->cana->maxlength= 10;
		$edit->cana->size     = 6;
		$edit->cana->rule     = 'required|positive';
		$edit->cana->autocomplete=false;
		$edit->cana->insertValue = '1';
		$edit->cana->onkeyup  ='importe(<#i#>)';
		$edit->cana->style    = 'width:90%';
		
		$edit->tipo = new dropdownField('Tipo <#o#>', 'tipo_<#i#>');
		$edit->tipo->db_name  = 'tipo';
		$edit->tipo->option("D","D");
		$edit->tipo->option("C","C");
		$edit->tipo->rel_id   = 'gitser';
		$edit->tipo->rule     = 'required|positive';
		$edit->tipo->autocomplete=false;
		$edit->tipo->onchange ='importe(<#i#>)';
		$edit->tipo->style    = 'width:100%';
		
		$edit->vexento = new dropdownField('Exento <#o#>', 'vexento_<#i#>');
		$edit->vexento->db_name  = 'vexento';
		$edit->vexento->option("N","Si");
		$edit->vexento->option("S","No");
		$edit->vexento->css_class= 'inputnum';
		$edit->vexento->rel_id   = 'gitser';
		$edit->vexento->rule     = 'required|positive';
		$edit->vexento->autocomplete=false;
		$edit->vexento->onchange ='importe(<#i#>)';
		$edit->vexento->style    = 'width:100%';

		$edit->preca = new inputField('Precio <#o#>', 'preca_<#i#>');
		$edit->preca->db_name   = 'preca';
		$edit->preca->css_class = 'inputnum';
		$edit->preca->rel_id    = 'gitser';
		$edit->preca->size      = 12;
		$edit->preca->rule      = 'required';
        $edit->preca->onkeyup  ='importe(<#i#>)';

		$edit->importe = new inputField('Importe <#o#>', 'importe_<#i#>');
		$edit->importe->db_name='importe';
		$edit->importe->size=12;
		//$edit->importe->readonly=true;
		$edit->importe->css_class='inputnum';
		$edit->importe->rel_id   ='gitser';
		$edit->importe->onkeyup  ='importe(<#i#>)';
		
		$edit->exento = new inputField('Inafecto <#o#>', 'exento_<#i#>');
		$edit->exento->db_name='exento';
		$edit->exento->size=12;
		$edit->exento->css_class='inputnum';
		$edit->exento->readonly=true;
		$edit->exento->rel_id   ='gitser';
		$edit->exento->insertValue = '0';
		
		$edit->creditos = new inputField('creditos <#o#>', 'creditos_<#i#>');
		$edit->creditos->db_name='creditos';
		$edit->creditos->size=12;
		$edit->creditos->css_class='inputnum';
		$edit->creditos->rel_id   ='gitser';
		$edit->creditos->readonly=true;
		$edit->creditos->onkeyup  ='importe(<#i#>)';
        
		$edit->usuario = new autoUpdateField('usuario',$this->session->userdata('usuario'),$this->session->userdata('usuario'));

        if($edit->_status=='show'){
		   $accion="javascript:window.location='".site_url("finanzas/gastos/dataedit/create")."'";  
           $edit->button_status('btn_finanzas','Nueva Factura',$accion,'TR','show');	
		}
		
		$transac =$edit->_dataobject->get("transac");
        $totbruto =$edit->_dataobject->get("totbruto");
        $comp     =$edit->_dataobject->get("comp");
        
		$abonos=$this->datasis->dameval("SELECT abonos FROM sprm WHERE transac='$transac'");
        
		
		//if(($edit->_status=='show')&&($totbruto==0)){
        //    
        //    $edit->buttons('back');
        //    
        //}
        
        if($edit->_status=='show'){
            
            IF($abonos>0){
                
                $edit->buttons('back'); 
            
            }ELSE{
				
				IF(($totbruto==0)&&($comp=='L')){
					
					$edit->buttons('back','modify','delete');
					
				}ELSE{
					
					$edit->buttons('delete','modify', 'save', 'undo', 'add_rel','back'); 	
				
				}
                
            }
        }ELSE{
          
          $edit->buttons('delete','modify', 'save', 'undo', 'add_rel','back');   
            
        }        
        	
        $edit->build();
        		
        $conten['form']  =&  $edit;
		$data['content'] = $this->load->view('view_egresos', $conten,true);
		$data['title']   = heading('Factura de Gasto  '.$edit->seriep->value.'-'.$edit->numero->value);

		$data['style']  = style('redmond/jquery-ui-1.8.1.custom.css');
		
		$data['script']  = script('jquery.js');
		$data['script'] .= script('jquery-ui.js');
		$data['script'] .= script('plugins/jquery.numeric.pack.js');
		$data['script'] .= script('plugins/jquery.numeric.pack.js');
		$data['script'] .= script('plugins/jquery.floatnumber.js');
		$data['script'] .= script('nformat.js');

		$data['head']    = $this->rapyd->get_head();
		$this->load->view('view_ventanas', $data);
	}
	function dataeditl(){
		
		$this->rapyd->load('dataobject','datadetails');
        
        $modbus=array(
			'tabla'   =>'cpla',
			'columnas'=>array(
				'cuenta'  =>'Cuenta',
				'descrip' =>'Descripci&oacute;n',
				'ajuste'  => 'Llevar Ajuste',
				'contrapartida'  => 'Contrapartida',
				'clase'  => 'Clase',
				'costo'  => 'Costo',
				'tercero'  => 'Tercero',
				'extranjeria'  => 'Extranjeria'
				),
			'filtro'  =>array('cuenta'  =>'Cuenta','descrip'=>'Descripci&oacute;n'),
			'retornar'=>array(
				'cuenta' =>'cuenta_<#i#>',
				'descrip'=>'desca_<#i#>',
				),
			'p_uri'   => array(4=>'<#i#>'),
			'titulo'  => 'Buscar Cuenta',
            'where'   => '`mostrar` = "S"'
		);
        		
        $btn=$this->datasis->p_modbus($modbus,'<#i#>');
        	
		$modbus_sprv=array(
			'tabla'   =>'sprv',
			'columnas'=>array(
	                'rif'=>'RIF',		
                'proveed' =>'C&oacute;digo Proveedor',
                'nombre'=>'Nombre'),
			'filtro'  =>array('rif'=>'RUC','nombre'=>'Nombre'),
			'retornar'=>array(
                'proveed'=>'proveed',
                'rif'=>'rif',
                'nombre'=>'nombre'),
                'p_uri'   => array(4=>'<#i#>'),
			'titulo'  =>'Buscar Proveedor');

		$boton=$this->datasis->p_modbus($modbus_sprv);
		
		$modbus_gser=array(
			'tabla'   =>'gser',
			'columnas'=>array(
					'seriep'=>'Serie',
					'numero'=>'Numero',
					'totbruto' =>'Monto',
	                'rif'=>'RIF',		
                'proveed' =>'C&oacute;digo Proveedor',
                'nombre'=>'Nombre'),
			'filtro'  =>array('rif'=>'RUC','nombre'=>'Nombre','numero'=>'Numero'),
			'retornar'=>array(
                'seriep'=>'seriend',
                'numero'=>'numerond'),
                'p_uri'   => array(4=>'<#i#>'),
                'titulo'  => 'Buscar Facturas');
              
		$botong=$this->datasis->p_modbus($modbus_gser);
        
		$do = new DataObject('gser');
		$do->rel_one_to_many('gitser', 'gitser', 'transac');
				
		$edit = new DataDetails('Asientos de Diario', $do);
		$edit->back_url = site_url('finanzas/gastos/docl/filteredgrid');
		$edit->set_rel_title('gitser','Cuenta <#o#>');
		//$edit->script($script);
		
		$edit->pre_process('insert' ,'_pre_insert');
		$edit->pre_process('update' ,'_pre_update');
        $edit->pre_process('delete' ,'_pre_del');
        
		$edit->post_process('insert','_post_insert');
		$edit->post_process('update','_post_update');
		$edit->post_process('delete','_post_delete');
		
		$edit->transac = new hiddenField(" ", 'transac');
                
        $edit->fecha = new DateonlyField("Fecha", "fecha","Y-m-d");
		$edit->fecha->insertValue = date("Y-m-d");
		$edit->fecha->size = 10;
        $edit->fecha->rule= "required";
        $edit->fecha->rule= "callback_cambio";
        
        $edit->estampa = new DateonlyField("Registro", "estampa","Y-m-d");
		$edit->estampa->insertValue = date("Y-m-d");
        $edit->estampa->mode="autohide";
        $edit->estampa->when=array('show');
		
		$edit->cuentai = new inputField('Cuenta', 'cuentai');
		$edit->cuentai->size     = 12;
		$edit->cuentai->rule     = 'required';
		$edit->cuentai->readonly  =true;
		$edit->cuentai->db_name='cuenta';
		$edit->cuentai->when=array('show');
        
		$edit->comp = new dropdownField("Comprobante", "comp");
		//$edit->comp->option("","");
		$edit->comp->option("L","L");
		$edit->comp->rule= "required";
		$edit->comp->onchange = "tcomp();";
        $edit->comp->style='width:45px;';
		
		$comp=$edit->getval('comp');
		
		$edit->seriei = new dropdownField("Comprobante", "seriei");
		$edit->seriei->option("","Seleccione un comprobante" );
		$edit->seriei->options("SELECT codigo, CONCAT_WS('-',codigo,descrip) AS descrip FROM seriel WHERE codigo NOT IN ('006','007')ORDER BY codigo ");	
		$edit->seriei->rule= "required";
		$edit->seriei->onchange = "numgser();";
        $edit->seriei->style='width:200px;';
        
        $ano=date("Y");
        $mes=date("m");
        
        $edit->numeroi = new inputField("N&uacute;mero", "numeroi");
		$edit->numeroi->size = 11;
        $edit->numeroi->css_class ='inputnum';
        $edit->numeroi->mode="autohide";
        $edit->numeroi->rule= "required";
		$edit->numeroi->maxlength=11;
		$edit->numeroi->rule= "callback_chexistecomp";

		
		$edit->numerond = new inputField("N&uacute;mero", "numerond");
		$edit->numerond->size = 12;
		$edit->numerond->maxlength=11;
		$edit->numerond->append($botong);
		
		$edit->proveed = new inputField("Proveedor", "proveed");
		$edit->proveed->size = 7;
		$edit->proveed->maxlength=5;
        //$edit->proveed->append($botonf.'<-Favoritos'.$boton);
        $edit->proveed->append($boton);
        $edit->proveed->readonly  = true;
        //$edit->proveed->mode="autohide";
        $edit->proveed->rule= "required";
		
		$edit->nombre = new inputField("Nombre", "nombre");
		$edit->nombre->size =  40;
		$edit->nombre->maxlength=80;
        $edit->nombre->readonly  = true;
    
		$edit->rif = new inputField("RUC", "rif");
		$edit->rif->size =  20;
		$edit->rif->maxlength=20; 
        $edit->rif->readonly  = true;
        
        $edit->condi1 = new inputField('Observaci&oacute;n', 'condi1');
		$edit->condi1->size =60;
        $edit->condi1->rule= "required";
		//$edit->condi1->maxlength=50;
        
        $edit->ccosto = new  dropdownField ('Centro de Costo', 'ccosto');
        $edit->ccosto->option("0001","Administraci&oacute;n");
		$edit->ccosto->option('0002',"Operaci&oacute;n");
		$edit->ccosto->option('0003','Importaci&oacute;n'); 
		$edit->ccosto->style='width:200px;';   
       
		$edit->moneda = new dropdownField("Moneda", "moneda");
		$edit->moneda->style='width:200px;';
		$edit->moneda->option("","Seleccione la moneda" );
		$edit->moneda->options("SELECT codigo,descrip FROM moneda ORDER BY codigo" );
		$edit->moneda->rule = 'required';
			
		$edit->cambio = new inputField('Cambio', 'cambio');
		$edit->cambio->css_class ='inputnum';
		$edit->cambio->size      = 12; 
		$edit->cambio->when=array('show');
		
        $edit->ivat = new inputField('Impuesto', 'iva');
		$edit->ivat->css_class ='inputnum';
		$edit->ivat->onkeyup  ='vpr()';
		$edit->ivat->db_name='totiva';
		$edit->ivat->size      = 10;

		$edit->totals = new inputField('Sub-Total', 'totals');
		$edit->totals->css_class ='inputnum';
		$edit->totals->db_name='totpre';
		$edit->totals->size      = 10;

		$edit->totalg = new inputField('Monto Total', 'totalg');
		$edit->totalg->css_class ='inputnum';
		$edit->totalg->db_name='totbruto';
		$edit->totalg->size      = 10;
		$edit->totalg->onkeyup  ='porcreten()';
		
		$edit->totneto = new inputField('Neto por Pagar', 'totneto');
		$edit->totneto->css_class ='inputnum';
		$edit->totneto->readonly  =true;
		$edit->totneto->db_name='totneto';
		$edit->totneto->size      = 10;
		
		$edit->mexento = new inputField('Total Inafecto', 'mexento');
		$edit->mexento->css_class ='inputnum';
		$edit->mexento->db_name='exento';
		$edit->mexento->readonly  =true;
		$edit->mexento->size      = 10;
		//$edit->mexento->when=array('show');
		//$edit->mexento->onkeyup  ='totiva()';
		
		$edit->credito = new inputField('Total en Creditos', 'credito');
		$edit->credito->css_class ='inputnum';
		$edit->credito->size      = 10;
		$edit->credito->readonly  =true;
		//$edit->credito->onkeyup  ='vpr()';
        
        
        $edit->porcrete = new inputField('Porcentaje', 'porcrete');
		$edit->porcrete->css_class ='inputnum';
		$edit->porcrete->size      = 3;
        $edit->porcrete->onkeyup  ='vpr()';
        
        $edit->fvrete = new DateonlyField("Fecha de Vencimiento", "fvrete","Y-m-d");
		$edit->fvrete->insertValue = date("Y-m-d");
		$edit->fvrete->size = 12;
                
        $edit->rete = new inputField('Monto de Detracci&oacute;n %', 'rete');
		$edit->rete->css_class ='inputnum';
		$edit->rete->insertValue = 0;
		$edit->rete->size      = 7;
               
        $edit->codrete = new inputField('Codigo de tasa', 'codrete');
		$edit->codrete->size      = 15;
        $edit->codrete->css_class ='inputnum';
        $edit->codrete->maxlength=2;
        					
		//**************************
		//  Campos para el detalle
		//**************************
		$edit->cuenta = new inputField('Cuenta <#o#>', 'cuenta_<#i#>');
		$edit->cuenta->size     = 12;
		$edit->cuenta->maxlength= 10;
		$edit->cuenta->readonly  = true;
		$edit->cuenta->db_name  = 'cuenta';
		$edit->cuenta->rel_id   = 'gitser';
		$edit->cuenta->rule     = 'required';
		$edit->cuenta->append($btn);

		$edit->desca = new inputField('Descripci&oacute;n <#o#>', 'desca_<#i#>');
		$edit->desca->db_name='desca';
		$edit->desca->rel_id='gitser';
		$edit->desca->rule = 'required|strtoupper';
		$edit->desca->size    = 35;
		
		$edit->ruc = new inputField('RUC <#o#>', 'ruc_<#i#>');
		$edit->ruc->db_name='ruc';
		$edit->ruc->rel_id='gitser';
		$edit->ruc->rule = 'strtoupper';
		$edit->ruc->size    = 11;
		$edit->ruc->maxlength= 11;
		
		$edit->cana = new inputField('Cantidad <#o#>', 'cana_<#i#>');
		$edit->cana->db_name  = 'cana';
		$edit->cana->css_class= 'inputnum';
		$edit->cana->rel_id   = 'gitser';
		$edit->cana->maxlength= 10;
		$edit->cana->size     = 6;
		$edit->cana->rule     = 'required|positive';
		$edit->cana->autocomplete=false;
		$edit->cana->insertValue = '1';
		$edit->cana->onkeyup  ='importe(<#i#>)';
		$edit->cana->style    = 'width:90%';
		
		$edit->tipo = new dropdownField('Tipo <#o#>', 'tipo_<#i#>');
		$edit->tipo->db_name  = 'tipo';
		$edit->tipo->option("D","D");
		$edit->tipo->option("C","C");
		$edit->tipo->rel_id   = 'gitser';
		$edit->tipo->rule     = 'required|positive';
		$edit->tipo->autocomplete=false;
		$edit->tipo->onchange ='importe(<#i#>)';
		$edit->tipo->style    = 'width:100%';
		
		$edit->vexento = new dropdownField('Exento <#o#>', 'vexento_<#i#>');
		$edit->vexento->db_name  = 'vexento';
		$edit->vexento->option("N","Si");
		$edit->vexento->option("S","No");
		$edit->vexento->css_class= 'inputnum';
		$edit->vexento->rel_id   = 'gitser';
		$edit->vexento->rule     = 'required|positive';
		$edit->vexento->autocomplete=false;
		$edit->vexento->onchange ='importe(<#i#>)';
		$edit->vexento->style    = 'width:100%';

		$edit->preca = new inputField('Precio <#o#>', 'preca_<#i#>');
		$edit->preca->db_name   = 'preca';
		$edit->preca->css_class = 'inputnum';
		$edit->preca->rel_id    = 'gitser';
		$edit->preca->size      = 12;
		$edit->preca->rule      = 'required';
        $edit->preca->onkeyup  ='importe(<#i#>)';

		$edit->importe = new inputField('Importe <#o#>', 'importe_<#i#>');
		$edit->importe->db_name='importe';
		$edit->importe->size=12;
		//$edit->importe->readonly=true;
		$edit->importe->css_class='inputnum';
		$edit->importe->rel_id   ='gitser';
		$edit->importe->onkeyup  ='importe(<#i#>)';
		
		$edit->exento = new inputField('Inafecto <#o#>', 'exento_<#i#>');
		$edit->exento->db_name='exento';
		$edit->exento->size=12;
		$edit->exento->css_class='inputnum';
		$edit->exento->readonly=true;
		$edit->exento->rel_id   ='gitser';
		$edit->exento->insertValue = '0';
		
		$edit->creditos = new inputField('creditos <#o#>', 'creditos_<#i#>');
		$edit->creditos->db_name='creditos';
		$edit->creditos->size=12;
		$edit->creditos->css_class='inputnum';
		$edit->creditos->rel_id   ='gitser';
		$edit->creditos->readonly=true;
		$edit->creditos->onkeyup  ='importe(<#i#>)';
        
		$edit->usuario = new autoUpdateField('usuario',$this->session->userdata('usuario'),$this->session->userdata('usuario'));

        if($edit->_status=='show'){
		   $accion="javascript:window.location='".site_url("finanzas/gastos/dataeditl/create")."'";  
           $edit->button_status('btn_finanzas','Nuevo Documento',$accion,'TR','show');	
		}
		
		$transac =$edit->_dataobject->get("transac");
        $totbruto =$edit->_dataobject->get("totbruto");
        $comp     =$edit->_dataobject->get("comp");
        
		$abonos=$this->datasis->dameval("SELECT abonos FROM sprm WHERE transac='$transac'");
        
	
        
        if($edit->_status=='show'){
            
            IF($abonos>0){
                
                $edit->buttons('back'); 
            
            }ELSE{
				
				IF(($totbruto==0)&&($comp=='L')){
					
					$edit->buttons('back','modify','delete');
					
				}ELSE{
					
					$edit->buttons('delete','modify', 'save', 'undo', 'add_rel','back'); 	
				
				}
                
            }
        }ELSE{
          
          $edit->buttons('delete','modify', 'save', 'undo', 'add_rel','back');   
            
        }        
        	
        $edit->build();
        		
        $conten['form']  =&  $edit;
		$data['content'] = $this->load->view('view_egresos2', $conten,true);
		$data['title']   = heading('Asientos de Diario L'.$edit->seriei->value.'-'.$edit->numeroi->value);

		$data['style']  = style('redmond/jquery-ui-1.8.1.custom.css');
		
		$data['script']  = script('jquery.js');
		$data['script'] .= script('jquery-ui.js');
		$data['script'] .= script('plugins/jquery.numeric.pack.js');
		$data['script'] .= script('plugins/jquery.numeric.pack.js');
		$data['script'] .= script('plugins/jquery.floatnumber.js');
		$data['script'] .= script('nformat.js');

		$data['head']    = $this->rapyd->get_head();
		$this->load->view('view_ventanas', $data);
	}
    function _pre_insert($do){
         
        $transac=$this->datasis->fprox_numero('ntransa');
          
        $fecha  =$do->get('fecha');
        $seriei =$do->get('seriei');
        $numeroi =$do->get('numeroi');
        $moneda =$do->get('moneda');
        $serie  =$do->get('seriep');
        $numero =$do->get('numero');
        $comp   =$do->get('comp');
        

        
            IF($moneda=='01' AND $seriei!='002' ){	
                $formap='001';	
            
            }else{
                $formap='002';	
            }
            
            IF($moneda=='01' AND $seriei=='002'){
                
                $formap='005';
            
            }else{
                IF($moneda=='02' AND $seriei=='002'){
                    $formap='006';
                }
            }
            
            if(($comp=='P')&& ($seriei=='010')){
			
                $do->set('comp','ND');
			
            }
       
        IF($comp!='L'){  
               
            $cuenta=$this->datasis->dameval("SELECT cuenta FROM seriefp WHERE codigo='$formap'");     
                
        }else{
            
             IF($moneda=='01'){
                 
                 $cuenta=$this->datasis->dameval("SELECT cuentalmn FROM seriel WHERE codigo='$seriei'");
                 
             }else{
                 
                 $cuenta=$this->datasis->dameval("SELECT cuentalme FROM seriel WHERE codigo='$seriei'");
                 
             }
            
        }
        
        
        $cambio=$this->datasis->dameval("SELECT cambio FROM cambio WHERE fecha='$fecha'");
        
        $do->set('transac',$transac);
        $do->set('cuenta',$cuenta);
        $do->set('cambio',$cambio);
        $do->set('formap',$formap);
        
        //rellena numero 11 char
		if(empty($seriep)){
			$seriep=$seriei;		
		}
		
		if(empty($numero)){
			$numero=$numeroi;	
		}
              
        $numero =str_pad($numero, 11, "0", STR_PAD_LEFT); 
        $serie =str_pad($serie,    3, "0", STR_PAD_LEFT); 
               
        $do->set('numero',$numero);
        $do->set('seriep',$serie);
        
        $numerond =$do->get('numerond');
        $seriend =$do->get('seriend');
        
        $numerond =str_pad($numerond, 11, "0", STR_PAD_LEFT); 
        $seriend  =str_pad($seriend,    3, "0", STR_PAD_LEFT); 
        
        $do->set('numerond',$numerond);
        $do->set('seriend',$seriend);
                    
		$proveed  =$do->get('proveed');
		$rif      =$do->get('rif');
		$rete     =$do->get('rete');
		$moneda   =$do->get('moneda');
        
        $igv=$this->datasis->traevalor('IGV');        
		$iva=$totals=$totale=$totordi=0;
        
		$cana=$do->count_rel('gitser');
        $porcrete =$do->get('porcrete');
        
        $totals =$do->get('totals');
        
        //echo 'aqui   '.$cana;
        
		for($i=0;$i<$cana;$i++){

            $importe   = $do->get_rel('gitser','importe',$i);
		    $do->set_rel('gitser','cana'    ,'1',$i);
            $do->set_rel('gitser','preca'   ,$importe,$i);
            
            $itcana    = $do->get_rel('gitser','cana',$i);
			$itpreca   = $do->get_rel('gitser','preca',$i);
			
			$ruc   = $do->get_rel('gitser','ruc',$i);
			
			if(empty($ruc)){
			
				$do->set_rel('gitser','ruc' ,$rif  ,$i);	
			}
			
			$itimporte = $itpreca*$itcana;
            $itiva     = ($itimporte*$igv/100);
            

			$do->set_rel('gitser','importe' ,$itimporte,$i);
            $do->set_rel('gitser','iva'     ,$itiva    ,$i);
			$do->set_rel('gitser','fecha'   ,$fecha    ,$i);
            $do->set_rel('gitser','proveed' ,$proveed  ,$i);  
            $do->set_rel('gitser','transac' ,$transac ,$i);
            
		}
		return true;
	}
    function _pre_update($do){
         
		$fecha    =$do->get('fecha');
		$proveed  =$do->get('proveed');
        $numero   =$do->get('numero');
        $porcrete =$do->get('porcrete');
        $rete     =$do->get('rete');
        $moneda   =$do->get('moneda');
        $seriei   =$do->get('seriei');
        $transac  =$do->get('transac');
        $comp     =$do->get('comp');
        $seriei   =$do->get('seriei');
        $rif      =$do->get('rif');

        IF($moneda=='01' AND $seriei!='002' ){	
			$formap='001';	
		
		}else{
			$formap='002';	
		}
        
        IF($moneda=='01' AND $seriei=='002'){
			
			$formap='005';
		
		}else{
			 IF($moneda=='02' AND $seriei=='002'){
				$formap='006';
			 }
		}
        
        if(($comp=='P')&& ($seriei=='010')){
			
			$do->set('comp','ND');
			
		}
        
               
        IF($comp!='L'){  
               
            $cuenta=$this->datasis->dameval("SELECT cuenta FROM seriefp WHERE codigo='$formap'");     
                
        }else{
            
             IF($moneda=='01'){
                 
                 $cuenta=$this->datasis->dameval("SELECT cuentalmn FROM seriel WHERE codigo='$seriei'");
                 
             }else{
                 
                 $cuenta=$this->datasis->dameval("SELECT cuentalme FROM seriel WHERE codigo='$seriei'");
                 
             }
            
        }
        
        $cambio=$this->datasis->dameval("SELECT cambio FROM cambio WHERE fecha='$fecha'");
        
        $do->set('cambio',$cambio);
        $do->set('cuenta',$cuenta);
        $do->set('formap',$formap);
        
        //rellena numero 11 char
        $numero =$do->get('numero');
        $numero =str_pad($numero, 11, "0", STR_PAD_LEFT);  
        $do->set('numero',$numero);
        
        $numerond =$do->get('numerond');
        $seriend =$do->get('seriend');
        
        $numerond =str_pad($numerond, 11, "0", STR_PAD_LEFT); 
        $seriend  =str_pad($seriend,    3, "0", STR_PAD_LEFT); 
        
        $do->set('numerond',$numerond);
        $do->set('seriend',$seriend);
        
        $this->db->query("DELETE FROM sprm WHERE transac='$transac'");
        
        $igv=$this->datasis->traevalor('IGV');
        
		//$iva=
		$totals=$totale=$totordi=0;
        
		$cana=$do->count_rel('gitser');
        
		for($i=0;$i<$cana;$i++){

            $importe   = $do->get_rel('gitser','importe',$i);
		    $do->set_rel('gitser','cana'    ,'1',$i);
            $do->set_rel('gitser','preca'   ,$importe,$i);
            
            $itcana    = $do->get_rel('gitser','cana',$i);
			$itpreca   = $do->get_rel('gitser','preca',$i);
			
			$ruc   = $do->get_rel('gitser','ruc',$i);
			
			if(empty($ruc)){
			
				$do->set_rel('gitser','ruc' ,$rif  ,$i);	
			}
			
			$itimporte = $itpreca*$itcana;
            $itiva     = ($itimporte*$igv/100);
            

			$do->set_rel('gitser','importe' ,$itimporte,$i);
            $do->set_rel('gitser','iva'     ,$itiva    ,$i);
			$do->set_rel('gitser','fecha'   ,$fecha    ,$i);
            $do->set_rel('gitser','proveed' ,$proveed  ,$i);  
            $do->set_rel('gitser','transac' ,$transac ,$i);
		}
                     		
                
		return true;
	}
    function _insertsprm($transac){
              
        //Seleciona datos de encabezado de factura
        
        $mSQL=$this->db->query("SELECT comp,fvrete,moneda,cambio,seriep,seriei,fvrete,cajachica,fecha, numero, proveed, nombre, vence,rete, totpre,totbruto,totiva,totneto, transac,numeroi FROM  gser WHERE transac='$transac'");
        
        $row = $mSQL->row();
        
        $usuario =$this->session->userdata['usuario'];
    
        
        $fecha      =$row->fecha;
        $fvrete     =$row->fvrete;
        $vence      =$row->vence;
        $proveed    =$row->proveed;
        $nombre     =$row->nombre;
        $totals     =$row->totpre;
        $totalg     =$row->totbruto;
        $iva        =$row->totiva;
        $totneto    =$row->totneto;                    
        $rete       =$row->rete;
        $rete       =$row->rete;
        $cajachica  =$row->cajachica; 
        $seriep     =$row->seriep;
        $numero     =$row->numero;
        $numeroi    =$row->numeroi;
        $seriei     =$row->seriei;
        $ntransa    =$row->transac;
        $moneda     =$row->moneda;
        $cambio     =$row->cambio;
        $comp       =$row->comp;
                              
        //inserta en movimiento de proveedores
        
        IF($totneto>0){
            
			IF($rete>0){
				
				//$ntransa =$this->datasis->fprox_numero('ntransa');
				$ndetra =$this->datasis->fprox_numero('ndetra');
				
				$mSQL_1=$this->db->query("INSERT INTO `sprm` (`cod_prv`, `nombre`,`tipo_doc`, `numero`, `fecha`, `subtotal`,`monto`,`impuesto`, `vence`,`transac`, `estampa`, `hora`, `usuario`, `factura`, `proveed`, `montodetra`, `cajachica`,`seriep`,`seriei`,`moneda`,`cambio`,`numeroi`,`totalg`) 
				VALUES ('DETRA', 'DETRACCIONES A PROVEEDORES', 'D', '$ndetra', '$fecha','$rete','$rete','0','$fvrete','$ntransa',CURRENT_TIMESTAMP(),CURRENT_TIME(),'$usuario','$numero','$proveed','0','N','$seriep','$seriei','$moneda','$cambio','$numero','$rete');");
				
				$mSQL_1=$this->db->query("INSERT INTO `sprm` (`cod_prv`, `nombre`, `tipo_doc`, `numero`, `fecha`, `subtotal`,`monto`,`impuesto`, `vence`,`transac`, `estampa`, `hora`, `usuario`, `detraccion`,`factura`, `proveed`, `montodetra`, `cajachica`,`totalg`,`seriep`,`seriei`,`moneda`,`cambio`,`numeroi`) 
				VALUES ('$proveed', '$nombre', '$comp', '$numero', '$fecha','$totals','$totneto','$iva','$vence','$ntransa',CURRENT_TIMESTAMP(),CURRENT_TIME(),'$usuario','$ndetra','$numero','$proveed','$rete','$cajachica','$totalg','$seriep','$seriei','$moneda','$cambio','$numeroi');");
	
				
			}else{
				
				
				$mSQL_1=$this->db->query("INSERT INTO `sprm` (`cod_prv`, `nombre`, `tipo_doc`, `numero`, `fecha`, `subtotal`,`monto`,`impuesto`, `vence`,`transac`, `estampa`, `hora`, `usuario`,`factura`, `proveed`, `montodetra`, `cajachica`,`totalg`,`seriep`,`seriei`,`moneda`,`cambio`,`numeroi`) 
				VALUES ('$proveed', '$nombre', '$comp', '$numero', '$fecha','$totals','$totneto','$iva','$vence','$ntransa',CURRENT_TIMESTAMP(),CURRENT_TIME(),'$usuario','$numero','$proveed','0','$cajachica','$totalg','$seriep','$seriei','$moneda','$cambio','$numeroi');");
				
			
			}
        }
    }
    function chexiste(){
 
        $numero=$this->input->post('numero');
        $nombre=$this->input->post('nombre');
        $proveed=$this->input->post('proveed');
        $seriep=$this->input->post('seriep');
        
        $numero =str_pad($numero, 11, "0", STR_PAD_LEFT); 
        $seriep =str_pad($seriep,  3, "0", STR_PAD_LEFT); 
        
		$chek=$this->datasis->dameval("SELECT COUNT(*) FROM gser WHERE proveed='$proveed' AND numero='$numero'AND seriep='$seriep'");
        
		if ($chek > 0){
			$this->validation->set_message('chexiste',"Factura de Gasto numero $numero ya se encuentra registrada en el sistema, proveedor $nombre ");
			return FALSE;
		}else {
  		return TRUE;
		}
	}
	function chexistecomp(){
 
        $numeroi=$this->input->post('numeroi');
        $seriei=$this->input->post('seriei');
        $comp=$this->input->post('comp');
        
        $numeroi =str_pad($numeroi, 11, "0", STR_PAD_LEFT); 
        $seriei  =str_pad($seriei,  3, "0", STR_PAD_LEFT); 
        
		$chek=$this->datasis->dameval("SELECT COUNT(*) FROM gser WHERE seriei='$seriei' AND numeroi='$numeroi' and comp='$comp'");
        
		if ($chek > 0){
			$this->validation->set_message('chexistecomp',"Numero de comprobante ya registrado");
			return FALSE;
		}else {
  		return TRUE;
		}
	}
    function _post_insert($do){
		
        $numero=$do->get('numero');
        $nombre=$do->get('nombre');
        $transac=$do->get('transac');
        $comp  =$do->get('comp');
        $seriei=$do->get('seriei');
        
        $this->_exento($transac);   
		$this->_insertsprm($transac);
        
		logusu('gser',"FC DE GASTO PROVEEDOR: $nombre NUMERO:  $numero CREADO");
	}
    
	function _pre_del($do){
        
        $transac=$do->get('transac');
        
        $chek=$this->datasis->dameval("SELECT abonos FROM sprm WHERE transac='$transac'");
       
        if ($chek > 0){
			$do->error_message_ar['pre_del'] = $do->error_message_ar['delete']='Factura con abonos no puede ser eliminada, Primero debe eliminar los abonos realizados';
			return false;
		}
		return true;
    }
    function _post_update($do){
        
		$numero=$do->get('numero');
        $nombre=$do->get('nombre');
        $transac=$do->get('transac');
        $this->_exento($transac);
        
		$this->_insertsprm($transac);
          
		logusu('gser',"FC DE GASTO PROVEEDOR: $nombre NUMERO:  $numero MODIFICADO");
	}
	function _exento($transac){
		$igv=$this->datasis->traevalor('IGV');
		$mSQL=$this->db->query("UPDATE gser SET totordi=IF(moneda='02',(totpre),(totpre/cambio)), totneto=(totbruto-rete) WHERE transac='$transac'");

	}
	function _post_delete($do){
        
        $transac=$do->get('transac');
        $numero=$do->get('numero');
        $nombre=$do->get('nombre');
        
        $this->db->query("DELETE FROM sprm   WHERE transac='$transac'");
        
		logusu('gser',"FC DE GASTO PROVEEDOR: $nombre NUMERO:  $numero ELIMINADO");
	}

}
?>
